<?php
class Telefon_modul  extends CI_Model {
	public $select;
	public $number;
	// номер телефона пользователя
	public $pass;
	// пароль пользователя
	public $text;
	public $msg;
	// сообщение для отравки по смс
	public $DB2;
	// для базы
	public function __construct() {
		// Call the Model constructor
		parent::__construct();
		$this -> db3 = $this -> load -> database('adsent', TRUE, TRUE);
	}

	public function region() {
		$time = false;

		$select = "SELECT *  from region ORDER BY id ASC  ";
		$q = $this -> db3 -> query($select);
		if ($q -> num_rows() > 0) {
			foreach ($q -> result() as $row) {

				$time[] = array('id' => $row -> id, 'name' => $row -> name, );
			}
		}
		return $time;
	}

	public function registraton_step1() {
		
		
		
		# регистрация пользователя
		$this -> generation_pass();
		$this -> msg = 'Ваш пароль : ' . $this -> pass;

		# добавляем в базу нового пользователя
		$this -> insert_number();

		# отправка сообщения на телефон
		$this -> send();
		return;
	}

	public function generation_pass() {
		# генерация нового пароля
		$this -> pass = substr(md5(rand(1234, 567891234567890)), 3, 5);
		return;
	}

	/**
	 * Функция для входа на сайт
	 *
	 * Вызов функции для создания профиля
	 *
	 * Вызов функции для создании сессии
	 *
	 * @return bool $row -> activ зарегистрирован ли пользователь
	 * @author
	 */

	function enter_adsent() {
		/*
				$this -> load -> library('session');
		echo '---';
		
 	echo	$this -> session -> userdata('id_phone');
		echo '---';
		*/
		
		$select = "SELECT * FROM `phone` where `number` = '" . $this -> number . "' and `password` = '" . $this -> password . "'  LIMIT 1";
		$query = $this -> db3 -> query($select);

		$query -> num_rows();

		if ($query -> num_rows() > 0) {
			$row = $query -> row();

			if ($row -> activ == 0) {

				$this -> update_activ();

				$id_profile = $this -> create_profile($row -> id);

				// Создаём запись в сессию
				$this -> create_session($row -> id);

				return $row -> activ;
				# Первый вход пользователя в систему

			} else {

				$this -> create_session($row -> id);
				return $row -> activ;
				# пользователь зарегистрирован и входит возможно второй раз
			}

		} else {
			// Пользователь не зарегистрирован
			return 'bad';
		}

	}

	/**
	 * Смена статуса  телефона на активный
	 *
	 * @return true
	 * @author
	 */
	function update_activ() {

		$this -> db3 -> where('number', $this -> number);
		$this -> db3 -> update('phone', array('activ' => 1, 'dateactiv' => date("Y-m-d H:i:s", time())));
		return true;
	}

	/**
	 * Меняем пароль у пользователя
	 *
	 * @param int $id уникальный идентификатор таблицы с мобильными телефонами
	 * @param varchar $pass пароль пользователя
	 *
	 * @author
	 */
	function reload_pass($id, $pass) {

		$this -> db3 -> where('id', $id);
		$this -> db3 -> update('phone', array('password' => $pass));
		return true;
	}

	/**
	 *  Запрос информации по профилю
	 * При данном условии, профиль должен быть полностью активным
	 *
	 *
	 * @param int $id уникальный идентификатор  для входа
	 * @author
	 */

	function request_profile($id) {

		$select = "select users.*, users.id user_id, phone.* from users join phone 
		on phone.id = users.phone where phone.id =  '$id';";
		$query = $this -> db3 -> query($select);
		$row = $query -> row();

		$rw['user_id'] = $row -> user_id;
		$rw['user_name'] = $row -> name;
		$rw['password'] = $row -> password;
		$rw['user_surname'] = $row -> surname;
		$rw['email'] = $row -> email;
		$rw['date'] = $row -> date;
		$rw['comment'] = $row -> comment;
		$rw['number'] = $row -> number;

		return $rw;
	}

	/**
	 * создание профиля пользователя
	 *
	 * @return int последняя вставленная запись и идентификатор профиля
	 * @author
	 */
	function create_profile($id) {
		$datau = array('phone' => $id, 'date' => date('Y-m-d H:i:s', time()), 'activ' => 1, );
		$this -> db3 -> insert('users', $datau);
		return $this -> db3 -> insert_id();
	}

	/**
	 * Добавляем информации в сессию, если пользователь активен
	 *
	 *
	 * @param int $id номер уник. идентификаторав базе, среди таблицы телефонов
	 * @return bool прошла ли авторизацияили нет
	 *
	 * */

	public function create_session($id = false) {

		if ($id != false) {

			$this -> load -> library('session');

			$newdata = array('id_phone' => $id, 'phone' => $this -> number, 'activ' => '1', );
			$this -> session -> set_userdata($newdata);

			return true;
		}
		return false;
	}

	/**
	 * Обновляем настройки профиля
	 *
	 *
	 * @param int $id номер уник. идентификаторав базе, среди таблицы телефонов
	 * @return bool прошла ли авторизацияили нет
	 *
	 * */

	public function profile_save($id_phone, $email, $name, $surname, $email_reload) {

		if ($email_reload == '1') {
			$data = array('email' => $email, 'name' => $name, 'surname' => $surname, 'email_activ' => 0);
		} else {
			$data = array('email' => $email, 'name' => $name, 'surname' => $surname);
		}
		$this -> db3 -> where('id', $id_phone);
		$this -> db3 -> update('users', $data);
		return FALSE;
	}

	/**
	 * Выход пользователя
	 *
	 * @return void
	 * @author
	 */
	function logout() {

		$this -> load -> library('session');
		$this -> session -> set_userdata('activ', '0');
	}

	/**
	 * Добавляем новый телефон в базу
	 *
	 *
	 * @param int $this -> number номер телефона
	 * @param char $this -> msg текст сообщения
	 * @return int $answer номер сессии
	 */

	public function insert_number() {
		# Добавление нового телефона в базу

		$datas = array('number' => $this -> number, 'password' => $this -> pass);

		$this -> db3 -> insert('phone', $datas);

		return;
	}

	/**
	 * Отправка нового пароля для пользователя
	 * по смс
	 *
	 *
	 * @param int $this -> number номер телефона
	 * @param char $this -> msg текст сообщения
	 * @return int $answer номер сессии
	 */

	public function send() {

		#		Отправка нового пароля для пользователя
		$url = "http://www.smstraffic.ru/multi.php";
		$ch = curl_init();

		$args = array('login' => 'c79250295377', 'password' => '0147896325', 'phones' => $this -> number, 'message' => $this -> msg, 'rus' => 5);

		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_TIMEOUT, 5);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));
		curl_setopt($ch, CURLOPT_POST, TRUE);
		curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($args));

		$answer = curl_exec($ch);
		$headers = curl_getinfo($ch);
		$error_text = curl_error($ch);
		$error_code = curl_errno($ch);

		curl_close($ch);
		var_dump($answer);
		# string(9) "316245027"
		$answer = '';
		return $answer;
	}

	/**
	 * Проверяем корректность телефона
	 * Который получаем от пользователя
	 * @param int $value номер телефона
	 * @return bool
	 */

	public function check_telefon($value = '000000000000') {

		# корректно ли пользователь указал телефон
		# да true нет false
		$this -> number = $value;
		$t = false;

		preg_match('/^8(\d)+/', $this -> number, $string);
		if (isset($string['0'])) {
			if (strlen($string['0']) == 11) {
				# телефон
				return true;
			}
		}
		return false;
	}

	/**
	 * Проверяем есть ли такой телефон в базе
	 * и какой статус у телефона
	 *
	 * @return bool $row -> activ результат запроса
	 */

	public function check_registration() {
		$select = "SELECT  activ FROM phone where `number` = '" . $this -> number . "' ;";
		$query = $this -> db3 -> query($select);

		if ($query -> num_rows() > 0) {
			$row = $query -> row();
			return $row -> activ;
		}
		return 'no';
	}

}
